System and/or method for error compensation in mechanical transmissions

ABSTRACT

The system can include a set of joints, a controller, and a model engine; and can optionally include a support structure and an end effector. Joints can include: a motor, a transmission mechanism, an input sensor, and an output sensor. The system can enable articulation of the plurality of joints.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.17/229,328, filed 13 Apr. 2021, which claims the benefit of U.S.Provisional Application No. 63/008,952, filed 13 Apr. 2020, both ofwhich are incorporated herein in their entirety by this reference.

TECHNICAL FIELD

This invention relates generally to the mechanical transmission systemsfield, and more specifically to a new and useful error compensationsystem system and/or method in the mechanical transmission systemsfield.

BACKGROUND

Mechanical transmission mechanisms can enable systems to gear actuatorsup (to operate at higher speeds) or down (to react higher torque loads),but they also can introduce positional error in the system, whichnegatively impacts system performance. One example of such error isbacklash that occurs in gear systems. Backlash is generally known in themechanical arts as an inefficiency that results from clearance or lostmotion in mechanism. Backlash is typically caused by gaps between parts(e.g., the circumferential space between two meshing gear teeth).Hardware solutions have been proposed to correct positional error inmechanical transmission systems. An example hardware solution is aharmonic drive specially designed to reduce or eliminate backlash. Onesuch harmonic drive is the Strain Wave gear developed and sold byHarmonic Drive AG™. While the harmonic drives work well in eliminatingerror, they are highly complex mechanical systems and, as a result, arevery expensive, sometimes prohibitively so for a commercial product.

Accordingly, there is a need for an improved technique to correct forcumulative errors in mechanical transmission systems.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a schematic representation of a variant of the system.

FIG. 2 is a schematic representation of a variant of the system.

FIG. 3A is an example of a test bench for a variant of the system.

FIG. 3B is a schematic representation of a variant of the system.

FIG. 4A is a diagrammatic representation of a variant of the method.

FIG. 4B is a diagrammatic representation of a variant of the method.

FIGS. 5A-D are schematic representations of transformations betweensectors during an initialization sequence in a variant of the method.

FIG. 6 is a diagrammatic representation of an initialization sequence ina variant of the method.

FIG. 7 is an example diagram of training a model in a variant of themethod.

FIG. 8 is an example diagram of a model in a variant of the method.

FIG. 9 is an example flow chart diagram for a variant of the method.

FIG. 10 is an example flow chart diagram for a variant of the method.

FIG. 11 is a schematic representation of a variant of initializing thejoint.

FIG. 12 is a schematic representation of a variant of controlling thejoint using the model.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following description of the preferred embodiments of the inventionis not intended to limit the invention to these preferred embodiments,but rather to enable any person skilled in the art to make and use thisinvention.

1. Overview.

The system 100, an example of which is shown in FIG. 1, can include aset of joints, a controller, and a model engine. The system canoptionally include a support structure and an end effector. However, thesystem 100 can additionally or alternatively include any other suitableset of components.

The system 100 functions to enable articulation of the plurality ofjoints. Joints are preferably articulated by automatic control and/orcan be configured to automatically execute control instructions (e.g.,predetermined control instructions, dynamically determined control,etc.), however the system can alternatively be manually controlled. In aspecific example, the system can be a computer numerical control (CNC)system. However, the system can otherwise suitably enable jointarticulation.

The term “joint” can refer to a set of components which constrainsactuation along a rotational, linear, and/or other single degree offreedom (DOF) of the system and/or along a single joint axis 111. Invariants, joints can include revolute joints which constrains jointarticulation to a rotation about a single axis. In a specific example,the system can be a 6-axis robotic arm which includes 6 actuatable“joints” associated with respective axes of the arm. However, joints canadditionally or alternatively refer to any other suitable axis ofactuation and/or have any other suitable meaning.

The term “substantially” as utilized herein can mean: exactly,approximately, within a predetermined threshold or tolerance, and/orhave any other suitable meaning.

2. Benefits.

Variations of the technology can afford several benefits and/oradvantages.

First, variations of this technology can enable use of low-cost hardwareby modeling and controlling based on the backlash in the system. In suchvariants, the system and/or method can tighten a control tolerance ofactuation via high-backlash components (e.g., spur gears). In a specificexample, tighter control tolerance can be achieved by modelling thetransmission mechanism with “backlash-in-the-loop” (e.g., in afeedforward control configuration), initialized for the specificmotor/transmission pair. In one example, the system can provide globalpositional tolerance of 1 mm (or better) for control of a 6-axis roboticarm using spur gears. In another example, the system can provide 0.05deg rotational accuracy across the full range of a (rotational) jointoutput. However, the technology can otherwise provide any suitablecontrol tolerances for any suitable set of hardware.

Second, variations of this technology can enable initialization of ajoint prior to forming an assembly with the joint, which can reduce themodel training time and/or computational complexity. In such variants,joints can be modelled/characterized simultaneously and/or in paralleland subsequently formed into an assembly. Additionally, initializingjoints prior to assembly can allow a full range of load cases (motorcurrents) to be modelled and/or allow the load to be controlled duringjoint initialization, which may otherwise be difficult duringinitialization/data generation of intermediate joints in someassemblies.

However, variations of the technology can additionally or alternatelyprovide any other suitable benefits and/or advantages.

3. System.

The system 100, an example of which is shown in FIG. 1, can include aset of joints 110, a controller 120, and a model engine 130. The systemcan optionally include a support structure 140 and an end effector 150.However, the system 100 can additionally or alternatively include anyother suitable set of components.

The system 100 functions to enable articulation of the plurality ofjoints. Joints are preferably articulated by automatic control and/orcan be configured to automatically execute control instructions (e.g.,predetermined control instructions, dynamically determined control,etc.), however the system can alternatively be manually controlled. In aspecific example, the system can be a computer numerical control (CNC)system. However, the system can otherwise suitably enable jointarticulation.

Each joint of the set of joints functions to enable articulation in asingle degree of freedom (DOF) of the system. The system can include asingle joint; a plurality of joints, such as: two, three, five, six,seven, more than seven, any range bounded by the aforementioned values;and/or any other suitable number of joints. Joints can be identical ordefine the same type of articulation (e.g., rotational, linear, etc.),and/or can define different types of articulation. Joints can bemechanically connected in any suitable combination and/or permutation ofseries and/or parallel. In a specific example, each joint is mounteddirectly to a common base/frame. In a second example, a first joint ismounted directly to a base structure and a remainder of the joints ofthe set are indirectly connected to the base structure via the firstjoint, such that an articulation of the first joint transforms each ofthe remainder of joints. However, the joints can be connected in anyother suitable manner and/or have any other suitable mechanicalrelationship.

Joints 110 can include: a motor 210, a transmission mechanism 220, aninput sensor 240, and an output sensor 250.

The motor functions to actuate the joint and/or transform a drive(driving) end of the transmission mechanism. The motor preferablyincludes an output component 212 (e.g., motor shaft) which rotatesrelative to a body of the motor (e.g., housing; fixedly connected to asupport structure such as a base). The motor can be an in-runner motor(e.g., where the output component is the rotor and/or is connected tothe rotor), outrunner motor (e.g., where the output component is thestator and/or is connected to the stator), brushed motor, brushlessmotor, permanent magnet motor, induction motor, synchronous motor,asynchronous motor, stepper motor, servo motor, and/or any othersuitable type of motor. The motor can be configured to receive a DCpower input (e.g., BLDC) and/or AC input (e.g., 2-phase, 3-phase,6-phase, etc.) from the controller. The motor can operate at a nominalvoltage of 5V, 12V, 24V, 48V, 110V, 120V, 240V, 330V, 600V, any rangebounded by the aforementioned values, and/or any other suitable voltage.The motor can have a power threshold (e.g., peak power, maximumcontinuous power, nominal power, max power of individual set of windingsof dual-wound motor, etc.) of: 0.10 kW, 0.20 kW, 0.25 kW, 0.30kW, 0.40kW, 0.45kW, 0.50 kW, any range bounded by the aforementioned values,and/or any other suitable power threshold. However, the motor can haveany suitable power capabilities and/or requirements. The motor canoperate at a speed threshold (e.g., nominal operating speed, unloadedspeed, max speed, minimum speed, etc.) of: less than 100 RPM, 500 RPM,1000 RPM, 1250 RPM, 1500 RPM, 1600 RPM, 1700 RPM, 2000 RPM, 5000 RPM,any range bounded by the aforementioned values, and/or any appropriatespeed; while operating at a torque of: less than 0 N-m, 1.5 N-m, 1.6N-m, 1.7 N-m, 2.3 N-m 2.4 N-m, 2.5 N-m, 3 N-m, 3.5 N-m, 4.5 N-m, 5 N-m,10 N-m, greater than 10 N-m, any range bounded by the aforementionedvalues, and/or any appropriate torque. However, the motor can have anysuitable torque/speed characteristics.

In variants, the motor is preferably fixedly mounted to a supportstructure, such as a base and/or spanning member (e.g., connectingoutput/driven end of a proximal joint to the motor of a distal joint;connecting two joints; etc.), with the output component configured totransform relative to the support structure and/or about a motor axis.The motor axis is preferably coaxial with a joint axis 101, but canadditionally or alternatively be parallel with a joint axis (e.g., fortransmission mechanisms relying wholly on spur gears), orthogonal to ajoint axis (e.g., for a transmission mechanism relying on a worm gearand/or bevel gears), and/or have any other suitable relationshiprelative to the joint axis.

However, the joints can include any other suitable motors.

The transmission mechanism functions to transform the motor actuationinto actuation about the axis and/or transform the actuation by agearing ratio (e.g., gear the motor up/down). The transmission mechanismpreferably defines a drive (driving) end 222 and a driven end 224. Thedrive end is preferably connected to the motor output component (e.g.,motor shaft), but can additionally or alternatively be connected to aninput sensor and/or can be otherwise suitably coupled to the motor. Thedrive end is preferably coaxial and/or aligned with the motor axis, butcan be otherwise suitably arranged. Likewise, the driven end of thetransmission mechanism preferably defines a joint axis and/or outputarticulation of the joint. The driven is preferably connected to theoutput sensor, but can additionally or alternatively be connected to adistal joint of the system (e.g., by a support member), an end effector,a test fixture (e.g., variable load) and/or can be otherwise suitablyconnected. The driven end can define a range of motion of the jointabout the joint axis, which can be constrained by physical hardware(e.g., bounded by a physical contact, maximum strain of power/datacables) and/or software (e.g., limit switches, limited based on theposition of the output sensor). In variants where the joint isrotational (e.g., revolute) and/or defines a rotation about the jointaxis, the range of motion can span: less than 180 degrees, 180 degrees,320 degrees, 359 degrees, 360 degrees, greater than 360 degrees, anyrange bounded by the aforementioned values, and/or any other suitablerange of motion. In an example: the range of motion of a base (first)joint can be −180 degrees to +180 degrees about its axis; the range ofmotion of a shoulder (second) joint can be −90 degrees to +90 degreesabout its axis; the range of motion of an elbow (third) joint can be−160 degrees to +160 degrees about its axis; the range of motion of afirst wrist (fourth) joint can be −90 degrees to +90 degrees about itsaxis; the range of motion of a second wrist (fifth) joint can be −160degrees to +160 degrees about its axis; and the range of motion of athird wrist (sixth) joint can be −180 degrees to +180 degrees about itsaxis.

The transmission mechanism can define a gear ratio between the drive(driving) end and the driven end, which (notated as output torque:inputtorque) can be 1:1, 10:1, 20:1, 30:1, 34:1, 35:1, 36:1, 38:1, 40:1 42:1,45:1, 50:1, 60:1, 120:1, greater than 120:1, any range bounded by theaforementioned values, and/or any other suitable gear ratio.

The transmission mechanism can include gears, such as: spur gears(a.k.a. straight-cut gears; e.g., involute, cycloidal, etc.), helicalgears, bevel gears, worm gears, and/or any other suitable types ofgears. In a variant, the transmission mechanism can consist of spurgears (e.g., in a planetary drive configuration), which may provide asignificant cost reduction in some cases. However, the transmissionmechanism can include any other suitable gear type. The gears of thetransmission mechanism can define drive arrangements such as: planetarydrive, worm drive, bevel gearbox drive, helical gearbox drive, and/orany other suitable drive arrangement.

Based on the drive arrangement and/or gearing ratio (e.g., type of gearteeth, number of gear teeth, pressure angle of the teeth, etc.), thetransmission mechanism can define a maximum backlash and/or backlashthreshold along the joint axis, which can be: less than 0.01 degrees,0.01 degrees 0.02 degrees, 0.05 degrees, 0.1 degrees, 0.12 degrees, 0.15degrees, 0.2 degrees, greater than 0.2 degrees, any range bounded by theaforementioned values, and/or any other suitable backlash threshold. Ina specific example, the maximum backlash exhibited by the transmissionmechanism is greater than (e.g., double) the rotational tolerance alongthe joint axis. However, the drive arrangement of various joints canotherwise be provided to minimize and/or fully eliminate backlash (e.g.,via a harmonic drive) in one or more joints of the system.

In variants, the backlash of the transmission mechanism can change(e.g., increase) as a result of mechanical wear. Accordingly, thebacklash in the transmission mechanism can change (e.g., increase) overtime, based on the operating time of the system and/or as a function ofthe number of cycles of the drive/driven ends.

In some variants, the transmission mechanism can optionally include ahousing, which can be integrated into the gears of the transmissionmechanism (e.g., where the housing comprises an involute spur gear of aplanetary gearbox) and/or can be separate from the gears. The housingcan function to retain and/or enclose the gears of the gearbox (e.g.,IP65, IP67, etc.). The housing is preferably fixed relative to the bodyof the motor (e.g., mounted to a static portion of the motor relative tothe motor axis) but can be otherwise suitably configured. Alternatively,the transmission mechanism can exclude a housing, and/or can beotherwise suitably configured.

The input sensor functions to measure a position of the drive (driving)end of the transmission mechanism and/or measure the motor outputcomponent. The input sensor is preferably an angular position sensor(e.g., for a rotary/revolute joint), but can be any other suitable typeof sensor. The input sensor is preferably an absolute encoder, but canadditionally or alternatively be an incremental encoder, and/or anyother suitable positional sensor, such as a rotary potentiometer, aresolver, a Hall-effect sensor, and/or any other suitable type ofposition sensor. The input sensor is preferably magnetic, but canadditionally or alternatively be optical, mechanical, or electromagneticinduction encoder. However, the input sensor can otherwise suitablymeasure an angular position of the drive end of the transmissionmechanism.

The input sensor is preferably connected to the motor output componentand/or the drive end of the transmission mechanism. In a first variant,the input sensor can be arranged between the motor and the transmissionmechanism. In a second variant, the input sensor can be integrated intothe motor. In a third variant, the input sensor can be connected to themotor output component at a rear end of the motor, opposing thetransmission mechanism along a length of the motor. However, the inputsensor can be otherwise suitably arranged, and/or otherwise suitablymeasure an input position (angle) of the drive end of the transmissionmechanism.

However, the joints can include any other suitable input sensor.

The output sensor functions to measure a position of the driven end ofthe transmission mechanism. The output sensor is preferably the sametype of sensor as the input sensor (e.g., identical), but canalternatively be a different type of sensor. The output sensor can be arotary (angular) position sensor or a linear position sensor (e.g., fora linear joint, such as a linear stage of a CNC mill). The output sensoris preferably an absolute encoder, but can additionally or alternativelybe an incremental encoder, and/or any other suitable positional sensor,such as a rotary potentiometer, a resolver, a Hall-effect sensor, and/orany other suitable type of position sensor. The input sensor ispreferably magnetic, but can additionally or alternatively be optical,mechanical, or electromagnetic induction sensor. However, the inputsensor can otherwise suitably measure a position of the drive end of thetransmission mechanism.

The output sensor is preferably connected to a distal and/or driven endof the transmission mechanism, but can be otherwise suitably arranged.In variants, the output sensor is connected during an initializationsequence, such that the position measurements can be used to generate adata set to initialize the motor/transmission pair. In some variants,the output sensor can remain attached during and/or after the joint isassembled into an assembly such as a robotic arm. In such variants, themeasurements of the output sensor can be used to update the model forthe joint and/or can be used to control the joint (e.g., in a feedbackloop). Alternatively, the output sensor can be optionally removed afterthe initialization sequence (e.g., after a model is trained for thejoint). However, the output sensor can be otherwise integrated, and/orthe joints can include any other suitable output sensor.

However, joints can include any other suitable components.

The system can optionally include a support structure, which functionsto structurally support and/or connect joints of the system. Supportstructure can include a base and/or frame, which can mount one or morejoints (e.g., a proximal/base joint of an arm). Support structure caninclude spanning members, which can extend between two joints and/or canbe actuated by a proximal joint (e.g., driven end) while supportingand/or transforming a distal joint. The support structure can connectjoints in series and/or parallel in any combination and/or permutation.In a first example, the system can be a robotic arm with each jointmechanically connected in series (an example is shown in FIG. 3B).Sequential joints which are mechanically connected in series by thesupport can have orthogonal joint axes (e.g., between a base joint and ashoulder joint—an example is shown in FIG. 3B; between each wrist joint;etc.), parallel joint axes (e.g., between a shoulder joint and an elbowjoint—an example is shown in FIG. 3B), skewed joint axes, and/or anyother suitable arrangement. However, the system can include any othersuitable support structure.

The system can optionally include an end effector, which functions tointeract with an environment and/or components external to the system.The end effector preferably connects to a distal and/or terminal jointof the system (e.g., relative to a base), but can be otherwise suitablyarranged. The end effector can be impactive, ingressive, astrictive,contigutive, and/or any other suitable type of end effector. In a firstspecific example, the end effector can be a weld stick. In a secondspecific example, the end effector can be a cutting cool, such as an endmill or drill bit. However, the system can include any other suitableend effector.

The system can include a controller, which functions to controloperation of the joints to transform the system (e.g., a motion of theend effector). The controller preferably controls the joint(s) accordingto a set of control instructions, which specify a position and/ortrajectory of a joint(s) of the system. The control instructions can bemachine readable instructions (e.g., G-code), but additionally oralternatively can be: manually specified by a user, automaticallydetermined by the controller or a separate processor, dynamicallydetermined, and/or otherwise suitably determined. The controller canexecute control instructions in a feedforward and/or feedback controlscheme, or otherwise suitably execute control instructions. The controlscheme employed by the controller can be: linear control (e.g., PID,etc.), nonlinear control, model predictive control (MPC), LQR control,intelligent control (e.g., artificial neural networks, Bayesianprobability, fuzzy logic, machine learning, evolutionary computation,genetic algorithms, and/or any combination thereof, etc.), adaptivecontrol, machine learning based control schemes, any other suitablecontrol scheme, and/or any combination thereof to control the joints.

In variants, the controller can optionally include a motion planner 122which functions to determine control instructions for each joint.Alternatively, the control instructions can be received from a remoteprocessor, and/or can be otherwise suitably determined.

The controller can include a backlash model 124, which functions toadjust control instructions based on a cumulative error (e.g., backlash)for a joint of the system. The backlash model 124 can be used by themotion planner 122, motor controller 126, joint controller, or byanother component. The backlash model 124 can be used to transform themotion plan (e.g., waypoints, trajectories, etc.) output by the motionplanner, transform the joint control instructions (e.g., degrees ofjoint rotation) generated from the motion plan, and/or otherwise used.The backlash model is preferably predetermined (e.g., static/unchangingduring operation based on the control instructions), but canadditionally or alternatively be updated with any suitable frequency(e.g., never, periodically, asynchronously with operation, synchronouslywith operation, etc.), dynamically modified (e.g., mutable duringoperation), and/or otherwise suitably implemented. The backlash model124 can specify: the joint control adjustments that need to be made to acontrol instruction (for the joint to achieve a target output associatedwith the control instruction); a new set of joint control instructionsassociated with the target output; and/or other outputs. In variants,the backlash model can be updated in response to an output measurementexceeding a threshold deviation from the control instructions—such as ifthe measured position about the joint axis exceeds a control tolerancefor the joint (e.g., 0.05 degrees, etc.). In a first variant, thebacklash model can be a lookup table. The model can include a lookuptable for each joint or angular position, a lookup table for eachangular sector/range, and/or any other suitable set of lookup tables.The lookup table can specify: an equation (e.g., to calculate anadjustment specific to the angular range), an adjustment value (e.g.,suggested or determined by reinforcement learning), a new controlinstruction, and/or other information. In a second variant, the backlashmodel can include a set of discrete models (e.g., linear models,piecewise linear model) cooperatively spanning a full actuation range ofa joint. In a third variant, the backlash model can be a regressionmodel. In a fourth variant, the backlash model can be a classificationmodel (e.g., wherein the model classifies the input into a bucketassociated with the backlash adjustment to be applied; incorporated witha reinforcement model; etc.). In an example, the backlash model can be amodel trained according to S114.

However, the controller can include any other suitable backlash model.

The controller can optionally include a motor controller 126 transformthe control instructions (e.g., control signal as adjusted based on thebacklash model) into a supplied power provision to effect motion of themotor. In a first variant, the motor controller can include an inverterintegrated into a body of the motor. In a second variant, the motorcontroller can be arranged proximal a base of the system, and power canbe routed through/around each joint of the system. In a third variant, afirst motor controller can be used while initializing the joint (e.g.,during S112) and a second motor controller can be used during operationof the system (e.g., during S130). However, the system can include anyother suitable motor controller, and/or otherwise exclude a motorcontroller.

The controller processing and/or motor control is preferably performedlocally at a physical processor of the system, such as where thebacklash model is stored offline in a memory of the controller, but canadditionally or alternatively include online and/or remotetrajectory/motion planning. In some variants, control instructions canbe determined at a remote processor and/or received at the controller.

However, the system can include any other suitable controller.

The system can include a model engine, which functions to determine thebacklash model to be employed by the controller. The model engine can bea machine learning engine which determines the backlash model based onthe set of inputs feature by implementing: regression analysis (e.g.,linear regression, kernel regression, logistic regression, polynomialregression, etc.), Bayesian networks, genetic algorithms, artificialneural networks, predictive decision trees, support-vector machines,and/or any other suitable ML analysis. However, the model engine canotherwise suitably determine the backlash model. The model engine can belocated at the system (e.g., processing performed onboard the assembly,controller, or local device), remote (e.g., utilizing cloud computing),centralized (e.g., processing at a single compute node), distributed(e.g., processing at multiple compute nodes, etc.), and/or provided inany other suitable location(s). However, the system can include anyother suitable model engine or otherwise exclude a model engine.

However, the system can include any other suitable components.

4. Method.

The method S100, an example of which is shown in FIG. 4A, can include:determining a model for a joint S110 and controlling the joint based onthe model S130. The method S100 can optionally include forming anassembly with the joint S120. However, the method S100 can additionallyor alternatively include any other suitable elements.

Determining a model for a joint S110 functions to determine a model tobe used in control of the joint (e.g., in S130). S110, an example ofwhich is shown in FIG. 4B, can include: initializing the joint S112 andtraining a model based on the feature data S114. The model is preferablydetermined so as to relate the behavior of gear tooth interactions in aspecific meshed arrangement of the transmission mechanism, which can beadvantageous because minor manufacturing deviations in a gear—even atmicron granularity for individual teeth—can exhibit unique cumulativeerrors (backlash) across the span of the drive end of the transmissionmechanism. Accordingly, where a ‘home’ position (or reference relativeto the joint axis) of the drive/driven ends of the transmission remainsfixed, the meshing contacts (or engaged teeth) of the gears isdeterministic at each position of the joint about the joint axis. As afirst illustrative example: if a planetary gearbox were disassembled, agear removed, the gear rotated radially by an angular span of one ormore teeth (thereby changing the tooth meshing in the gearbox), and thegear replaced at its new angular position (all else held constant), thebacklash relationships within the gearbox may change. As a secondillustrative example, a gearbox having a chipped/worn/deviant tooth mayexhibit significant backlash differences based on the repeatedengagement of the tooth (e.g., for a gearbox with a gear ratio of N:1, adeviant tooth located on the driving gear may be engaged N times perrotation about the joint axis, whereas a deviant tooth located on thedriven gear be engaged 1 time per rotation about the joint axis; thecumulative error when a deviant tooth is located on the driving gear maybe significantly greater than when the deviant tooth is located on thedriven gear).

Models are preferably for each joint independently (e.g., independentlyof the state of attachment into an assembly), but can additionally oralternatively relate the cumulative error (backlash) of all jointswithin the assembly. Models of joints of an assembly can be trained inseries (e.g., sequentially based on the order of attachment into anassembly) and/or in parallel (e.g., simultaneously, prior to attachmentinto an assembly). A unitary model or a plurality of models can bedetermined for each: joint of an assembly, arm of the assembly, angularregime about the joint axis, and/or there can be any other suitablenumber of models determined in S110.

Initializing a joint S112 functions to generate feature data to train amodel. S112 can additionally or alternatively function to set a geartooth relationship of the joint relative to the joint axis. S112 caninclude: executing an initialization sequence and generating featuredata based on the initialization sequence (illustrative example shown inFIG. 11). S112 can optionally include setting a gear tooth mesh of thejoint.

Optionally setting the gear tooth mesh of the joint functions locate ahome orientation of the mechanical transmission relative to the jointaxis (and/or range of motion thereof). The home orientation can be setat an upper bound of the range of motion about the joint axis, lowerbound of the range of motion about the joint axis, a center positionabout the joint axis, and/or any other arbitrary position within therange of motion. The home orientation and/or gear tooth mesh ispreferably specified for the full set of components of the joint (e.g.,motor, input sensor, transmission mechanism, output sensor), but canadditionally or alternatively define the range of motion separately fromthe motor, with the input and output sensors mounted in fixed positionsrelative to the drive and driven ends of the transmission mechanism. Thegear tooth mesh can be set by an assembly of the joint (by an attachmentof the output sensor) and/or can be set in any arbitrary configurationof the assembled transmission mechanism (e.g., motor/transmission pairas received from an OEM, arrangement at inception of initializationsequence, etc.).

S112 can include executing an initialization sequence, which functionsto enable generation of feature data. The initialization sequence ispreferably pre-determined, but can additionally or alternatively bemanually determined, dynamically determined, and/or otherwise specified.The initialization sequence can be the same for each joint of anassembly, the same for each similar motor/transmission pair (e.g., forjoints having the same gear ratio and/or type of motor), or can bedifferent for each joint (e.g., based on the range of motion of thejoint). In a first variant, the initialization sequence can be performedon a test bench or using a test assembly (an example is shown in FIG.3A). In a second variant, the joint can be initialized in situ, with thejoint integrated into an assembly (an example is shown in FIG. 3B).

S112 can include generating feature data based on the initializationsequence. Feature data can include inputs (e.g., control inputs,currents, input positions, etc.), expected outputs, measured outputs,and/or other data. Feature data preferably includes measurements of thepositions at the input and output sensors during execution of theinitialization sequence, but can additionally or alternatively includemotor current data (e.g., from a motor controller or other loadmonitoring device connected to the motor), input instructions, thedifference between the expected output and the measured output (e.g.,slop, dead play), and/or any other suitable feature data. Feature datais preferably generated/stored during execution of the initializationsequence, but can additionally or alternatively include feature datafrom historical operation of the joint, historical operation of similarjoints (e.g., for a motor current parameter), and/or any other suitablefeature data. Feature data preferably includes sets of (substantially)synchronous measurements from the input sensor (e.g., angular positionof the drive end), output sensor (e.g., angular position of the drivenend about the joint axis), and/or motor current. However, any othersuitable feature data can be generated during S110.

The initialization sequence preferably transforms the joint through afull range of one or more features of the model. In variants, theinitialization sequence can include a plurality of distinct data setswhich can be used to individually and/or collectively model cumulativeerror (backlash) across distinct portions of the range of motion of thejoint. It can be beneficial to generate data across subsets of the rangeof motion because greatest contribution to cumulative error/backlash ina transformation commonly occurs when transitioning between a firstdirection of motion and a second (opposing) direction of motion—such aswhen transitioning between a clockwise drive motion and anti-clockwisedrive motion.

In variants, the initialization sequence can include repeatedtransformations of the driven end of the joint between a firstsegment/regime within the range of motion and a second, distinctsector/regime within the full range of motion (examples are shown inFIGS. 5A-D and FIG. 11). In an example, the initialization sequence caninclude: rotating the motor in an anti-clockwise direction and,concurrently, sampling a first set of synchronous measurements at thefirst and second encoders comprising the first and second angularpositions; based on the first set of synchronous measurements,determining the second rotational position of the driven end is within afirst predetermined angular range about the rotational axis; rotatingthe motor in clockwise direction and, concurrently, sampling a secondset of synchronous measurements at the first and second encoderscomprising the first and second angular positions; based on the secondset of synchronous measurements, determining the second rotationalposition of the driven end is within a second predetermined angularrange about the rotational axis, wherein the second predeterminedangular range is offset from the first predetermined angular range; andrepeating the aforementioned steps more than a threshold number of times(e.g., for each of a set of load conditions).

In variants, the initialization sequence can include varying the motorload—such as by adjusting the torque applied at the driven end (e.g., anexample is shown in FIG. 3A), providing adjustable resistance at thedrive end (e.g., applying a torque in opposition to the transformationusing a second motor), directly adjusting the motor torque (e.g., at themotor controller), and/or otherwise varying the motor load.Alternatively, the motor load can be unregulated, fixed, arbitrary,and/or in any other suitable state during the initialization sequence.

However, the joint can be otherwise suitably initialized.

S110 can include training a model based on the feature data S114, whichfunctions to train a model (e.g., backlash model) for the joint based onthe feature data. The model can then be subsequently used to predict aposition of driven end about the joint axis for a planned transformationof the set of features: such as the position at the drive end and/or fora supplied motor current. A controller can therefore adjust a motorcontrol to compensate for backlash in a feedforward configuration tominimize an offset between a control instruction (e.g.,trajectory/position of the driven end of the joint) and an actual motionof the driven end of the joint. In a specific example, the model canprovide a linear transformation between a position at the drive end ofthe joint into a predicted position at the driven end of the joint. In asecond example, the model can provide a transformation between aposition at the drive end and motor load (e.g., current, torqueparameter, etc.) into a predicted position at the driven end of thejoint.

The model is preferably trained by the model engine, such as using:regression analysis (e.g., linear regression, kernel regression,logistic regression, polynomial regression, etc.), Bayesian networks,genetic algorithms, artificial neural networks, predictive decisiontrees, support-vector machines, and/or any other suitable ML analysis.However, the model can be otherwise suitably trained based on thefeature data.

The model is preferably trained using the feature data values. In afirst example, the model can be trained using the inputs as the traininginputs and the resultant differences between the expected and measuredoutputs as the training targets (e.g., wherein the model determines theinput adjustment amount to achieve the expected output). In a secondexample, the model can be trained using the inputs as the traininginputs and the respective measured output as the training target (e.g.,wherein the model determines a new input for the joint or predicts thejoint position based on the input). However, the model can be used usingany other suitable set of training data.

In variants, the model can include a plurality of sub-models, eachtrained individually for a predetermined angular range (e.g., sector)within the range of motion about the joint axis. In such variants, thesub-models can be trained based on a subset of the feature data forwhich the direction of motion transitioned within the predeterminedangular range (an example is shown in FIG. 6). Alternatively, the sector(e.g., associated with a current position about the joint axis;associated with the last transition about the joint axis) can be aninput feature used to train the model.

Training the model can optionally include updating the model, whichfunctions to refine/improve the model and/or adjust the model based onthe mechanical wear of the transmission mechanism. In a first variant,the model is updated by periodic reinforcement learning, based onfeature data generated while controlling the joint according to S130. Ina second variant, the model can be updated in response to determiningsatisfaction of an update threshold, such as a wear threshold (e.g.,threshold number of cycles of the motor, driven shaft, specific gear,etc.), an error in excess of a threshold tolerance (e.g., once, morethan a threshold number of times; control tolerance of the arm and/orjoint exceeding a threshold; etc.), threshold quantity of feature data(e.g., stored in a local/remote repository), and/or any other suitableupdate threshold. In a third variant, updating the model can includeexecuting the initialization sequence and/or retraining the model—suchas in response to a servicing of the system (e.g., satisfaction of aservice interval threshold), a replacement of one or more hardwarecomponents (e.g., spur gear within the transmission), and/orsatisfaction of another initialization condition (e.g., positionaldeviation in excess of a retraining threshold, etc.). However, the modelcan be updated with any appropriate frequency or else not updated.

However, the model can be otherwise suitably determined.

Optionally forming an assembly with the joint S120 functions tomechanically connect a set of joints (e.g., using a support structure).The assembly is preferably formed after each joint is initialized and/orafter executing the initialization sequence, but can be formed with anyother suitable timing. Thus, the assembly may be formed after the ‘home’position is defined for each joint axis and/or after setting the geartooth mesh for each joint. Additionally, in variants, the assembly canbe formed without persistent power supply to the respective joint(s). Insuch cases it can be beneficial to retain or constrain the position ofthe drive end of the joint about the joint axis to preserve the homeposition and relevance of the model to the individual tooth interactions(e.g., where some gear meshes may be not be periodic for one rotation ofthe driven end). However, the home position can be preserved by positionof an absolute position of the output sensor and/or persistentengagement of various joint components in absence of power.

However, the joint can be otherwise integrated into an assembly orotherwise provided in isolation.

Controlling the joint based on the model S130 functions to effect motionof the assembly (e.g., according to a set of control instructions). S130can additionally or alternatively function to mitigate backlash effectsbetween gear teeth within the joint based on the gear mesh. Controllingthe joint based on the model S130 can include determining controlinstructions for each joint of the assembly (e.g., trajectory/motionplan determined by a motion planner), determining joint-specific controlbased on the joint-specific model (e.g., adjusting based on the specificbacklash characteristics of the joint, example shown in FIG. 12),controlling the joint using the joint specific instructions (e.g.,feedback loop for the motor control; executing the field-orientedcontrol of the motor, etc.). In a specific example, the controller isconfigured to control the actuator of each joint according to a set ofcontrol instructions, including: based on the first and secondrotational positions at a first time, predicting a backlash errorresulting at a second time with the respective backlash model for eachjoint (e.g., performing inference, using the model, etc.); andcompensating for the predicted backlash error between the first andsecond times (e.g., during runtime, etc.).

Controlling the joint can optionally include storing feature data, whichmay be used to update and/or retrain the model (e.g., periodically, toadjust for wear). Feature data can be stored within a local memory ofthe controller, at a remote repository (e.g., transmitted via a dataconnection; an example is shown in FIG. 1), and/or in any otherappropriate location. Stored feature data can additionally oralternatively be used to validate a control tolerance—such as bycomparing a predicted position of the driven end about the joint axis toa measured position—and/or to detect satisfaction of an updatethreshold.

However, the joint can be otherwise suitably controlled.

5. Example Model Training.

As mentioned above, any suitable machine learning or other technique canbe used to develop the models described herein. One example includes anartificial neural network, one example of which is described below. Anartificial neural network can use a backpropagation algorithm to learnweights. One goal of backpropagation is to optimize the weights so thatthe neural network can learn how to correctly map arbitrary inputs tooutputs. The neural network can have multiple layers. In this example,the neural network had two layers in addition to the input layer, onehidden layer and one output layer. The input layer included the unitsthat represent the actual encoder outputs. The output layer included theunits that represent the angular position of the motor output componentin degrees (e.g., measured at the input sensor). The hidden units of thenetwork can be used to extract the underlying features of relationshipsbetween the actual encoder outputs and the input degrees given to themotor.

The example neural network can have any number of features, e.g., 1, 2,3, 5, 10, etc. For example, the neural network can have just onefeature, e.g., actual (measured) angle at the output sensor (outputencoder). The network weights the feature, adds a bias, passes it to anactivation function, and outputs a prediction (an example is shown inFIG. 8). One goal of running the tests described above is to find theweights that provide the best fit to the training data. In order tomeasure the fit, any known technique can be used, e.g., the leastsquares error over the dataset. This is the sum squared error of ournetwork's predictions over a batch of training dataset, given by theequation:

L(w)=Σ_(i) (ŷ−y _(i))²   

In some instances, an optimization algorithm can be used (e.g., the adamoptimization algorithm) on the loss's gradient ∇_(w)L(w) in order tominimize the overall error on the training data sample. Adam is anadaptive technique that builds on adagrad and further reduces itsdownside. In some cases, as the optimizer does its work, it will updatethe weights and biases, thereby obtaining a line that best approximatesthe change in the drive input degrees over the input feature(s)—examplesare shown in FIGS. 7, 9, and 10.

As mentioned above, additional features can be implemented to make themodel more robust. Certain features like sector information and loadvariation can have notable impact on the cumulative error in amechanical system. With multiple features, the model can include alinear combination of features to produce one output, e.g.,y_(i)=h(x_(i),w)=w^(T)x_(i). The network may be modified in order totrain a multi-feature model. In such instances, the input layer caninclude units that represent the input features. The output layer caninclude the same or different units. The hidden units can be used tolearn relationships between the input features and the inputs describedabove (e.g., motor inputs).

In various embodiments, the network can take as an input a data pointwith multiple features, e.g., actual (measured) output sensor angle,sector along the joint axis, and load; weights the features; add a biasand sum them up; pass it to activation function; and thereby output aprediction—an example diagram of this process is illustrated in FIG. 8.

6. System and Method Examples.

In one example, a system includes: a set of joints mechanicallyconnected to a base, each joint defining a respective rotational axis ofthe system, each joint including: an actuator comprising an actuatoroutput component; a mechanical transmission defining a drive endconnected to the actuator output component and a driven end rotatableabout the rotational axis of the joint; a first encoder connected to thedrive end and configured to sample a first rotational position of thedrive end; and a second encoder connected to the driven end andconfigured to sample a second rotational position of the driven end; anda controller electrically connected to the actuator, first encoder, andsecond encoder of each joint, the controller comprising a backlash modelfor each joint of the system, wherein the controller is configured tocontrol the actuator of each joint according to a set of controlinstructions, including: based on the first and second rotationalpositions at a first time, predicting a backlash error resulting at asecond time with the respective backlash model for each joint; andcompensating for the predicted backlash error between the first andsecond times.

In one example, the mechanical transmission consists of a plurality ofspur gears.

In one example, the controller is configured to control the actuatorwith a feedback loop based on the first rotational position and anactuator current.

In one example, for each joint, the mechanical transmission includes aplurality of spur gears meshed in a unique tooth arrangement relative toa home orientation about the rotational axis, wherein the backlash modelof each joint is determined for the unique tooth arrangement before thejoints are mechanically connected.

In one example, the backlash model of each joint is trained on backlashdata specific to the respective joint.

In one example, each backlash model is unchanged during control of theactuator of the respective joint.

In one example, each joint defines a maximum control tolerance of lessthan 0.1 degrees, wherein a maximum backlash of the mechanicaltransmission is greater than the control tolerance.

In one example, the control tolerance of each joint is about 0.05degrees, wherein the maximum backlash of the mechanical transmission isat least 0.15 degrees.

In one example, the second encoder of each joint is an absolute encoder,wherein a span of an angular range of motion of the driven end of eachjoint about the respective rotational axis is limited to a singlerevolution or less.

In one example, the set of joints includes six joints, wherein thesystem is a 6-axis robotic arm.

In one example, a method including: initializing a coordinate frame of ajoint, the coordinate frame including a rotational axis of the joint,the joint including a mechanical transmission, the mechanicaltransmission including a drive end defining an input position and adriven end defining an output position about the rotational axis of thejoint; wherein initializing the joint includes, for each of a pluralityof distinct angular sectors about the rotational axis: performing aninitialization sequence; during the initialization sequence, samplingsynchronous measurements of the first rotational position and secondrotational position, respectively; determining a backlash model based onthe synchronous measurements associated with each of the plurality ofdistinct angular ranges; after initializing the coordinate frame andafter determining the backlash model, forming an assembly with thejoint; and wherein the assembly is configured to be controlled based onthe backlash model and the coordinate frame.

In one example, the initialization sequence includes repeatedlytransitioning from a first direction of rotation about the rotationalaxis to a second direction opposite the first direction of rotation.

In one example, determining the backlash model includes: at a machinelearning (ML) engine, training the backlash model independently for eachof the plurality of distinct angular sectors, wherein the synchronousmeasurements of the input and output positions are features used totrain the backlash model.

In one example, the backlash model includes a regression model trainedon the features.

In one example, the features used to train the backlash model furthercomprise a joint load.

In one example, the method further includes: while controlling theassembly, sampling measurements of the first and second positions,wherein the control of the assembly comprises closed loop feedbackcontrol based on the measurements; sending the measurements to remoterepository; determining satisfaction of an update threshold; and inresponse to determining satisfaction of the update threshold, updatingthe backlash model by reinforcement learning for the backlash model andthe measurements.

In one example, the update threshold is determined based on a mechanicalwear of the mechanical transmission.

In one example, a method includes: controlling a joint based on abacklash model specific to the joint and a coordinate frame including arotational axis of the joint, wherein the backlash model was trainedbased on training data generated for a set of distinct angular sectorsand measured rotational positions of the joint for each distinct angularsector; wherein the joint includes a mechanical transmission, themechanical transmission including a drive end defining an input positionand a driven end defining an output position about the rotational axisof the joint; wherein controlling the joint includes: based on the inputand output positions at a first time, predicting a backlash errorresulting at a second time with the respective backlash model for eachjoint; and compensating for the predicted backlash error between thefirst and second times.

In one example, the joint is part of an assembly formed after thebacklash model was trained.

In one example, a coordinate frame of the joint is initialized beforethe assembly is formed.

In one example, the training data is determined by: performing aninitialization sequence, including repeatedly transitioning, within thedistinct angular sector, from a first direction of rotation of thedriven end to a second direction opposite the first direction ofrotation; and during the initialization sequence, sampling synchronousmeasurements of the first rotational position and second rotationalposition at a first encoder connected to the drive end and a secondencoder connected to the driven end, respectively

Alternative embodiments implement the above methods and/or processingmodules in non-transitory computer-readable media, storingcomputer-readable instructions. The instructions can be executed bycomputer-executable components integrated with the computer-readablemedium and/or processing system. The computer-readable medium mayinclude any suitable computer readable media such as RAMs, ROMs, flashmemory, EEPROMs, optical devices (CD or DVD), hard drives, floppydrives, non-transitory computer readable media, or any suitable device.The computer-executable component can include a computing system and/orprocessing system (e.g., including one or more collocated ordistributed, remote or local processors) connected to the non-transitorycomputer-readable medium, such as CPUs, GPUs, TPUS, microprocessors, orASICs, but the instructions can alternatively or additionally beexecuted by any suitable dedicated hardware device.

Embodiments of the system and/or method can include every combinationand permutation of the various system components and the various methodprocesses, wherein one or more instances of the method and/or processesdescribed herein can be performed asynchronously (e.g., sequentially),concurrently (e.g., in parallel), or in any other suitable order byand/or using one or more instances of the systems, elements, and/orentities described herein.

As a person skilled in the art will recognize from the previous detaileddescription and from the figures and claims, modifications and changescan be made to the preferred embodiments of the invention withoutdeparting from the scope of this invention defined in the followingclaims.

We claim:
 1. A system comprising: a set of joints mechanically connectedto a base, each joint defining a respective rotational axis of thesystem, each joint comprising: an actuator comprising an actuator outputcomponent; a mechanical transmission defining a drive end connected tothe actuator output component and a driven end rotatable about therotational axis of the joint; a first encoder connected to the drive endand configured to sample a first rotational position of the drive end;and a second encoder connected to the driven end and configured tosample a second rotational position of the driven end; and a controllerelectrically connected to the actuator, first encoder, and secondencoder of each joint, the controller comprising a backlash model foreach joint of the system, wherein the controller is configured tocontrol the actuator of each joint according to a set of controlinstructions, comprising: based on the first and second rotationalpositions at a first time, predicting a backlash error resulting at asecond time with the respective backlash model for each joint; andcompensating for the predicted backlash error between the first andsecond times.